/**
 * 
 */
package negocio;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import modelo.Calificaciones;
/**
 * @author Lucy
 *
 */
public class CalificacionesDAO {
	private static final String SQL_INSERT=
            "insert into calificaciones(idCalificaciones,puntaje, idExamen, matricula)"+"values(?,?,?,?)";
    private static final String SQL_UPDATE=
            "update calificaciones set idCalificaciones=?, puntaje=?, idExamen?, matricula=? where idCalificaciones=?";
    private static final String SQL_DELETE=
            "delete from calificaciones where idCalificaciones=?";
    private static final String SQL_SELECT=
            "select * from calificaciones where idCalificaciones=?";
    private static final String SQL_SELECT_ALL=
            "select * from idCalificaciones";
    private static final String SQL_VALIDA=
   "select idCalificaciones from calificaciones where idCalificaciones=?"; //aqui en lugar de matricula decia clave
    
    private Connection con=null;
    
    public CalificacionesDAO(){
        
    }
    
    public void create (Calificaciones calificaciones) throws SQLException{
        PreparedStatement ps= null;
        obtenerConexion();
        try{
            ps= con.prepareStatement(SQL_INSERT);
            ps.setInt(1,calificaciones.getIdCalificaciones());
            ps.setString(2,calificaciones.getPuntaje());
            ps.setInt(3, calificaciones.getIdExamen());
            ps.setLong(4, calificaciones.getMatricula());
            ps.executeUpdate();
        } finally {
            if(ps != null) ps.close();
            if(con != null) con.close();          
            
        }    
    }
    
    public void update(Calificaciones calificaciones) throws SQLException{
        PreparedStatement ps= null;
        obtenerConexion(); 
    try{
    
     ps= con.prepareStatement(SQL_UPDATE);
            ps.setInt(1,calificaciones.getIdCalificaciones());
            ps.setString(2,calificaciones.getPuntaje());
            ps.setInt(3, calificaciones.getIdExamen());
            ps.setLong(4, calificaciones.getMatricula());
            
            ps.executeUpdate();
    }finally {
    if(ps!=null) ps.close();
            if(con != null) con.close();
            }
    } 
   public void delete(Calificaciones calificaciones)throws SQLException{
        PreparedStatement ps= null;
        obtenerConexion();
	        try{
	            ps=con.prepareStatement(SQL_DELETE);
	            ps.setLong(1, calificaciones.getIdCalificaciones());
	            ps.executeUpdate();
	        }finally{
	            if(ps!=null) ps.close();
	            if(con != null) con.close();
	            
	        }
     }
    public Calificaciones load(Calificaciones calificaciones)throws SQLException{
        PreparedStatement ps= null;
             ResultSet rs=null;
        obtenerConexion();
	        try{
	            ps=con.prepareStatement(SQL_SELECT);
	            ps.setLong(1,calificaciones.getIdCalificaciones());
	            rs = ps.executeQuery();
	            List<Calificaciones> resultados=obtenerResultados(rs);
	            if(resultados.size()>0){
	                return (Calificaciones)resultados.get(0);
	            }else{
	                return null;
	            }
	        }finally{
	            if(rs != null) rs.close();
	            if(ps!=null) ps.close();
	            if(con != null) con.close();
	            
	        }   
            
     }
    public boolean existe(Calificaciones calif) throws SQLException
     {
    	 PreparedStatement ps= null;
         ResultSet rs=null;
         obtenerConexion();
         try{
	            ps=con.prepareStatement(SQL_VALIDA);
	            ps.setInt(1,calif.getIdCalificaciones());
	            rs = ps.executeQuery();
	            rs.last();
	            if(rs.getRow()==0)
	            	return false;
	            return true;
	       }finally{
	            if(rs != null) rs.close();
	            if(ps!=null) ps.close();
	            if(con != null) con.close();
	            //rs.beforeFirst();
	            
	       }   
     }
public List<Calificaciones> loadAll()throws SQLException{
        PreparedStatement ps= null;
        ResultSet rs=null;
        obtenerConexion();
        try{
            ps=con.prepareStatement(SQL_SELECT_ALL);

            rs = ps.executeQuery();
            List<Calificaciones> resultados=obtenerResultados(rs);
            if(resultados.size()>0){
                return resultados;
            }else{
                return null;
            }
        }finally{
            if(rs != null) rs.close();
            if(ps!=null) ps.close();
            if(con != null) con.close();
        }   
            
    }
    private List<Calificaciones> obtenerResultados(ResultSet rs) throws SQLException{
        List<Calificaciones> resultados= new ArrayList<Calificaciones>();
        while(rs.next()){
            Calificaciones calificaciones=new Calificaciones();
            calificaciones.setIdCalificaciones(rs.getInt("idCalificaciones"));
            calificaciones.setPuntaje(rs.getString("puntaje"));
            calificaciones.setIdExamen(rs.getInt("idExamen"));
            calificaciones.setMatricula(rs.getLong("matricula"));
            
            
            resultados.add(calificaciones);
        }
        return resultados;
        
    }
    
    private void obtenerConexion(){
    	try {
			Class.forName("com.mysql.jdbc.Driver");{
		     con=DriverManager.getConnection("jdbc:mysql://localhost:3306/loginWebA", "root", "mysql");
		        
	    	}
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }
}
